package com.baizhi.genericity;

import java.util.ArrayList;
import java.util.List;

/**
 * 泛型只在编译器有效
 */
public interface GenericityDemo2 {
    public static void main(String[] args) {
        //List<E>  这里的<E>就是泛型， 可以把E当成一个参数，这个参数可以是任意类型，具体是什么类型看你传的是什么类型
        //你传String E就是String类型，你传Student, E就是Student

        //用String把E替换的过程就叫做泛型擦除
        List<String> list1 = new ArrayList<>();
        list1.add("aa");
        list1.add("bb");

        List<Integer> list2 = new ArrayList<>();
        list2.add(1);
        list2.add(2);

        Class  a = list1.getClass();
        Class  b = list2.getClass();

        System.out.println(a.equals(b)); //true  equals引用数据类型比较比较的是属性一致，也就是说list1和list2属性类型一致
        /*
           泛型只在编译器有效，当转成字节码文件的时候List中装的依然是Object类型
           但是当你从List中取出数据的时候会自动向下转型转成对应的String 或者Integer  这叫类型擦除
         */
    }
}
